package main.java.BLT;


import java.util.LinkedHashMap;
import java.util.Map;



public class TableroResultado {
	
	private static Map<Integer, Map<Integer,Resultado>> tablero;
	
	public TableroResultado(){
		
	    Resultado resultado1 = new Resultado(7,7);
	    Resultado resultado2 = new Resultado(4,3);
	    Resultado resultado3 = new Resultado(5,5);
	    Resultado resultado4 = new Resultado(2,0);
	    Resultado resultado5 = new Resultado(1,1);
	    Resultado resultado6 = new Resultado(8,0);
	    Resultado resultado7 = new Resultado(0,1);
	    Resultado resultado8 = new Resultado(1,2);
	    Resultado resultado9 = new Resultado(4,0);
	    Resultado resultado10 = new Resultado(0,0);
	    Resultado resultado11 = new Resultado(4,1);
	    Resultado resultado12 = new Resultado(4,2);
	    Resultado resultado13 = new Resultado(4,5);
	    Resultado resultado14 = new Resultado(0,2);
	    Resultado resultado15 = new Resultado(1,0);
	    Resultado resultado16 = new Resultado(0,8);
	    Resultado resultado17 = new Resultado(2,2);
	    Resultado resultado18 = new Resultado(0,5);
	    Resultado resultado19 = new Resultado(0,3);
	    Resultado resultado20 = new Resultado(1,8);
	    Resultado resultado21 = new Resultado(3,1);
	    Resultado resultado22 = new Resultado(2,1);
	    
	    tablero = new LinkedHashMap<Integer, Map<Integer,Resultado>>();
	    
	    //Creamos el map 1 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior1 =  new LinkedHashMap<Integer,Resultado>();
	    mapaInterior1.put(1, resultado1);
	    tablero.put(1, mapaInterior1);
	    
	    //Creamos el map 2 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior2 =  new LinkedHashMap<Integer,Resultado>();
	    mapaInterior2.put(1, resultado9);
	    mapaInterior2.put(2, resultado10);
	    tablero.put(2, mapaInterior2);
		
	    //Creamos el map 3 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior3 =  new LinkedHashMap<Integer,Resultado>();
	    mapaInterior3.put(1, resultado2);
	    mapaInterior3.put(2, resultado4);
	    mapaInterior3.put(3, resultado5);
	    tablero.put(3, mapaInterior3);
	    
	    //Creamos el map 4 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior4 = new LinkedHashMap<Integer,Resultado>();
	    mapaInterior4.put(1, resultado13);
	    mapaInterior4.put(2, resultado3);
	    mapaInterior4.put(3, resultado6);
	    mapaInterior4.put(4, resultado3);
	    tablero.put(4, mapaInterior4);
	    
	    //Creamos el map 5 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior5 = new LinkedHashMap<Integer,Resultado>();
	    mapaInterior5.put(1, resultado12);
	    mapaInterior5.put(2, resultado4);
	    mapaInterior5.put(3, resultado4);
	    mapaInterior5.put(4, resultado14);
	    mapaInterior5.put(5, resultado10);
	    tablero.put(5, mapaInterior5);
	    
	    //Creamos el map 6 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior6 = new LinkedHashMap<Integer,Resultado>();
	    mapaInterior6.put(1, resultado12);
	    mapaInterior6.put(2, resultado14);
	    mapaInterior6.put(3, resultado7);
	    mapaInterior6.put(4, resultado7);
	    mapaInterior6.put(5, resultado15);
	    mapaInterior6.put(6, resultado10);
	    tablero.put(6, mapaInterior6);
	    
	    //Creamos el map 7 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior7 = new LinkedHashMap<Integer,Resultado>();
	    mapaInterior7.put(1, resultado12);
	    mapaInterior7.put(2, resultado14);
	    mapaInterior7.put(3, resultado7);
	    mapaInterior7.put(4, resultado7);
	    mapaInterior7.put(5, resultado15);
	    mapaInterior7.put(6, resultado5);
	    mapaInterior7.put(7, resultado10);
	    tablero.put(7, mapaInterior7);
	    
	    //Creamos el map 8 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior8 = new LinkedHashMap<Integer,Resultado>();
	    mapaInterior8.put(1, resultado12);
	    mapaInterior8.put(2, resultado5);
	    mapaInterior8.put(3, resultado8);
	    mapaInterior8.put(4, resultado16);
	    mapaInterior8.put(5, resultado7);
	    mapaInterior8.put(6, resultado8);
	    mapaInterior8.put(7, resultado8);
	    mapaInterior8.put(8, resultado17);
	    tablero.put(8, mapaInterior8);
	    
	    //Creamos el map 9 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior9 = new LinkedHashMap<Integer,Resultado>();
	    mapaInterior9.put(1, resultado11);
	    mapaInterior9.put(2, resultado10);
	    mapaInterior9.put(3, resultado15);
	    mapaInterior9.put(4, resultado18);
	    mapaInterior9.put(5, resultado10);
	    mapaInterior9.put(6, resultado19);
	    mapaInterior9.put(7, resultado4);
	    mapaInterior9.put(8, resultado8);
	    mapaInterior9.put(9, resultado5);
	    tablero.put(9, mapaInterior9);
	    
	    //Creamos el map 10 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior10 = new LinkedHashMap<Integer,Resultado>();
	    mapaInterior10.put(1, resultado11);
	    mapaInterior10.put(2, resultado10);
	    mapaInterior10.put(3, resultado15);
	    mapaInterior10.put(4, resultado18);
	    mapaInterior10.put(5, resultado10);
	    mapaInterior10.put(6, resultado4);
	    mapaInterior10.put(7, resultado19);
	    mapaInterior10.put(8, resultado8);
	    mapaInterior10.put(9, resultado10);
	    mapaInterior10.put(10, resultado5);
	    tablero.put(10, mapaInterior10);

	    
	    //Creamos el map 11 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior11 = new LinkedHashMap<Integer,Resultado>();
	    mapaInterior11.put(1, resultado11);
	    mapaInterior11.put(2, resultado10);
	    mapaInterior11.put(3, resultado20);
	    mapaInterior11.put(4, resultado18);
	    mapaInterior11.put(5, resultado14);
	    mapaInterior11.put(6, resultado15);
	    mapaInterior11.put(7, resultado15);
	    mapaInterior11.put(8, resultado10);
	    mapaInterior11.put(9, resultado10);
	    mapaInterior11.put(10, resultado10);
	    mapaInterior11.put(11, resultado3);
	    tablero.put(11, mapaInterior11);
	    
	    
	    //Creamos el map 12 e introducimos los resultados
	    Map<Integer,Resultado> mapaInterior12 = new LinkedHashMap<Integer,Resultado>();
	    mapaInterior12.put(1, resultado2);
	    mapaInterior12.put(2, resultado16);
	    mapaInterior12.put(3, resultado21);
	    mapaInterior12.put(4, resultado14);
	    mapaInterior12.put(5, resultado7);
	    mapaInterior12.put(6, resultado15);
	    mapaInterior12.put(7, resultado15);
	    mapaInterior12.put(8, resultado22);
	    mapaInterior12.put(9, resultado7);
	    mapaInterior12.put(10, resultado7);
	    mapaInterior12.put(11, resultado14);
	    mapaInterior12.put(12, resultado5);
	    tablero.put(12, mapaInterior12);
	    
	}
	
	public Map<Integer,Map<Integer,Resultado>> getTableroResultado(){
		return tablero;
	}

	public String toString() {
		return "TableroResultado [tablero=" + tablero + "]";
	}

	
	public Resultado obtenerResultado(Integer ataq,Integer defe){
		Resultado r;
		Map<Integer,Resultado> mapa= tablero.get(ataq);
		r = mapa.get(defe);
		return r;
	}
	
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((tablero == null) ? 0 : tablero.hashCode());
		return result;
	}

	@SuppressWarnings("static-access")
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		TableroResultado other = (TableroResultado) obj;
		if (tablero == null) {
			if (other.tablero != null)
				return false;
		} else if (!tablero.equals(other.tablero))
			return false;
		return true;
	}
	
}




